#pragma once

#include "abstract/IGameplayView.h"
#include "abstract/IDeductionView.h"
#include "abstract/IBoardView.h"
#include "abstract/IAccusationView.h"
#include "../controller/GameplayController.h"

namespace Views {
	class DependencyContainer
	{
		static DependencyContainer* instance;

		Controllers::GameplayController* gameplay_controller;
		IGameplayView* gameplay_view;
		IBoardView* board_view;
		IDeductionView* deduction_view;
		IAccusationView* accusation_view;
		
		DependencyContainer(Controllers::GameplayController*);

	public:
		static void initialize(Controllers::GameplayController*);
		static DependencyContainer* getInstance();

		IGameplayView* getGameplayViewInstance();
		IBoardView* getBoardViewInstance();
		IDeductionView* getDeductionViewInstance();
		IAccusationView* getAccusationViewInstance();
	};
}

